;; 可以接收多个参数的函数
(ns args)
(defn demo [x y z]
  (+ x y z))
(println (demo 2 4 5))


;; 变量函数是采用不同数量参数的函数（一些参数是可选的）。 
;; 函数还可以指定“＆”符号符号以接受任意数量的参数。
;; 函数声明在参数other的旁边有'＆'符号，这意味着它可以接受任意数量的参数
(defn demo 
   [message & others]
   ;; 'clojure.string / join'用于组合每个单独的字符串参数，它被传递给函数
   (str message (clojure.string/join " " others)))
(println (demo "Hello" "This" "is" "the" "message"))


;; 这是一个高阶函数示例
;; 示例是接受函数和集合并返回满足条件（谓词）的元素的集合的函数
(println (filter even? (range 0 10)))
